import java.io.*;
import java.util.Scanner;

public class Copy {
    public static void main(String[] args) throws IOException {
        // 1. 让用户输入要复制的文件路径
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入要复制文件的路径: ");
        String srcPath = sc.nextLine();
        File srcFile = new File(srcPath);
        // 2. 判断输入的是否是文件,不是就返回
        if(!srcFile.isFile()){
            System.out.println("输入的文件路径错误!程序结束!");
            return;
        }
        // 3. 是文件 就输入要复制到的路径
        System.out.print("请输入要复制到的目标路径: ");
        String destPath = sc.nextLine();
        File destFile = new File(destPath);
        // 4. 判断是否存在复制后的文件,如果有就返回复制失败
        if(destFile.exists()){
            System.out.println("该目录已有该文件,复制失败!");
            return;
        }
        // 5. 判断父级目录存不存在 不存在就创建目录
        if(!destFile.getParentFile().exists()){
            destFile.getParentFile().mkdirs();
        }
        // 6. 复制文件
        try (InputStream inputStream = new FileInputStream(srcFile); OutputStream outputStream = new FileOutputStream(destFile)) {
            while(true) {
                byte[] bytes = new byte[1024];
                int len = inputStream.read(bytes);
                if(len == -1){
                    break;
                }
                outputStream.write(bytes,0,len);
            }
            outputStream.flush();
        }
        System.out.println("复制完成!!!");
    }
}
